@file:JsQualifier("authentication")
@file:Suppress("INTERFACE_WITH_SUPERCLASS", "OVERRIDING_FINAL_MEMBER", "RETURN_TYPE_MISMATCH_ON_OVERRIDE", "CONFLICTING_OVERLOADS")
package authentication


import AuthenticationGetSessionOptions
import Thenable
import AuthenticationSession
import AuthenticationSessionAccountInformation
import AuthenticationSessionsChangeEvent
import AuthenticationProvider
import AuthenticationProviderOptions
import vscode.Disposable
import vscode.Event

external interface `T$60` {
    var createIfNone: dynamic /* Boolean | AuthenticationGetSessionPresentationOptions */
        get() = definedExternally
        set(value) = definedExternally
}

external fun getSession(providerId: String, scopes: Array<String>, options: AuthenticationGetSessionOptions /* AuthenticationGetSessionOptions & `T$60` | AuthenticationGetSessionOptions & `T$61` */): dynamic /* Thenable | Thenable */

external interface `T$61` {
    var forceNewSession: dynamic /* Boolean | AuthenticationGetSessionPresentationOptions | AuthenticationForceNewSessionOptions */
        get() = definedExternally
        set(value) = definedExternally
}

external fun getSession(providerId: String, scopes: Array<String>): Thenable<AuthenticationSession?>

external fun getAccounts(providerId: String): Thenable<Array<AuthenticationSessionAccountInformation>>

external var onDidChangeSessions: Event<AuthenticationSessionsChangeEvent>

external fun registerAuthenticationProvider(id: String, label: String, provider: AuthenticationProvider, options: AuthenticationProviderOptions = definedExternally): Disposable